ヘッダーをスキップ
Oracle TimesTen Replication - TimesTen to TimesTen開発者および管理者ガイド
リリース7.0
E05169-01
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

レプリケーション・スキームの定義

「高可用性システムの設計」の説明に従ってレプリケーション・スキームを設計した後、SQL文CREATE REPLICATIONを使用してそのスキームをデータ・ストアに適用できます。


注意: アクティブ・スタンバイ・ペアを作成するには、SQL文CREATE ACTIVE STANDBY PAIRを使用する必要があります。詳細は、「アクティブ・スタンバイ・ペア」を参照してください。


注意: アクセス制御を有効にしてTimesTenをインストールした場合、CREATE REPLICATION文を使用するには、データ・ストアに対するDDL権限が必要です。詳細は、『Oracle TimesTen In-Memory Databaseインストレーション・ガイド』のアクセス制御に関する説明を参照してください。

CREATE REPLICATION文の完全な構文については、『Oracle TimesTen In-Memory Database SQLリファレンス・ガイド』を参照してください。例3.1に、単純なレプリケーション・スキームの構成およびこの項の内容に関連するパラメータを示します。

例3.1

レプリケーション・スキームの広範な例は、「順序のレプリケート」を参照してください。


注意: CREATE REPLICATION文でのネーミング・エラーは、多くの場合、解決が困難であるため、要素名、データ・ストア名、ホスト名の綴りは時間をかけて十分に確認してください。

データ・ストアで使用されるレプリケーション・スキームは、TTREP表に示され、システムを再起動しても有効です。TTREP表の詳細は、『Oracle TimesTen In-Memory Database SQLリファレンス・ガイド』のシステム表およびレプリケーション表に関する説明を参照してください。


注意: TTREP表の内容は直接変更できません。変更は、SQL文CREATE REPLICATIONまたはALTER REPLICATIONによってのみ行うことができます。

レプリケーション・スキームおよび表の所有者

レプリケーション・スキームとレプリケーション表の所有者および名前は、マスターおよびサブスクライバの両方のデータ・ストアで同じである必要があります。すべてのデータ・ストアの所有者を共通にするには、CREATE REPLICATION文にレプリケーション・スキーム名とともに所有者名を明示的に指定します。

たとえば、repschemeという名前のレプリケーション・スキームにreplという名前の所有者を割り当てる場合、CREATE REPLICATION文の先頭行は次のようになります。

CREATE REPLICATION repl.repscheme

レプリケーション・スキームおよびレプリケート表の名前から所有者を省略した場合、デフォルトの所有者名(リクエスト・ユーザーのログイン名またはDSNのUID属性で設定されている名前)がかわりに使用されます。所有者名がデータ・ストア間で異なっている場合、レプリケーション・スキームは機能しません。

レプリケーション要素の定義

レプリケーション・スキームは、1つ以上のELEMENT記述で構成されます。ELEMENT記述には、要素の名前、そのタイプ(DATASTORE、TABLEまたはSEQUENCE)、更新が行われるマスター・データ・ストア、更新がレプリケートされるサブスクライバ・データ・ストアが含まれます。

後でALTER REPLICATION文を使用して要素またはそのパラメータの削除または変更を行う場合は、スキーム内の各要素の名前を使用して要素を識別できます。要素名は、レプリケーション・スキーム内で一意である必要があります。

禁止事項

複数のサブスクライバ・スキームに要素を定義する正しい方法については、「複数サブスクライバ・スキーム」を参照してください。要素を伝播する正しい方法については、「伝播スキーム」を参照してください。

ALTER REPLICATION文を使用すると、既存のレプリケーション・スキームに表、キャッシュ・グループ、順序およびデータ・ストアを追加できます(「レプリケーション・スキームの変更」を参照)。また、既存のレプリケーション・スキームに属しているデータ・ストアから表または順序を削除することもできます(「レプリケーション・スキームからの表または順序の削除」を参照)。

この項の後半では、次の内容について説明します。

データ・ストア要素の定義

マスター・データ・ストア(masterds)のすべての内容(すべての表および順序)をサブスクライバ・データ・ストア(subscriberds)にレプリケートする場合、ELEMENT記述(dsl)は次のようになります。

ELEMENT ds1 DATASTORE

      MASTER masterds ON "system1"

      SUBSCRIBER subscriberds ON "system2"

CREATE REPLICATION文のEXCLUDE TABLE、EXCLUDE SEQUENCEおよびEXCLUDE CACHE GROUP句を使用すると、データ・ストア要素からの特定の表、順序およびキャッシュ・グループの除外を選択できます。EXCLUDE句を使用すると、EXCLUDE句で指定されたオブジェクトを除くデータ・ストア全体が、要素内のすべてのサブスクライバにレプリケートされます。オブジェクトの種類(表、順序またはキャッシュ・グループ)ごとに1つのみのEXCLUDE句を使用します。次に例を示します。

ELEMENT ds1 DATASTORE

     MASTER masterds ON "system1"

     SUBSCRIBER subscriberds ON "system2"

     EXCLUDE TABLE tab1, tab2

     EXCLUDE SEQUENCE seq1

     EXCLUDE CACHE GROUP cg3

CREATE REPLICATION文のINCLUDE TABLE、INCLUDE SEQUENCEおよびINCLUDE CACHE GROUP句を使用すると、データ・ストアの特定の表、順序およびキャッシュ・グループのみの挿入を選択できます。INCLUDE句を使用すると、INCLUDE句で指定されたオブジェクトのみが、要素内の各サブスクライバにレプリケートされます。オブジェクトの種類(表、順序またはキャッシュ・グループ)ごとに1つのみのINCLUDE句を使用します。次に例を示します。

ELEMENT ds1 DATASTORE

     MASTER masterds ON "system1"

     SUBSCRIBER subscriberds ON "system2"

     INCLUDE TABLE tab3

     INCLUDE SEQUENCE seq2, seq3

     INCLUDE CACHE GROUP cg1, cg2

データ・ストア要素を使用してレプリケートするように構成されているデータ・ストアに新しい表または順序を作成すると、その表または順序は、ALTER REPLICATION文を使用してレプリケーション・スキームを変更しないかぎりレプリケートされません。詳細は、「既存のレプリケーション・スキームへの表または順序の追加」を参照してください。

表要素の定義

repl.tab1およびrepl.tab2を(masterdsという名前でホストsystem1に配置されている)マスター・データ・ストアから(subscriberdsという名前でホストsystem2に配置されている)サブスクライバ・データ・ストアにレプリケートする場合、ELEMENT記述(aおよびb)は次のようになります。

ELEMENT a TABLE repl.tab1

      MASTER masterds ON "system1"

      SUBSCRIBER subscriberds ON "system2"

ELEMENT b TABLE repl.tab2

      MASTER masterds ON "system1"

      SUBSCRIBER subscriberds ON "system2"

順序要素の定義

順序repl.seqの現在値に対する更新を(masterdsという名前でホストsystem1に配置されている)マスター・データ・ストアから(subscriberdsという名前でsystem2に配置されている)サブスクライバ・データ・ストアにレプリケートする場合、ELEMENT記述(a)は次のようになります。

ELEMENT a SEQUENCE repl.seq

      MASTER masterds ON "system1"

      SUBSCRIBER subscriberds ON "system2"


注意: レプリケーション・スキームで指定された各データ・ストアの名前は、そのデータ・ストアのDSN定義内のDataStore属性で指定された(パスを除く)ファイル名の接頭辞と一致する必要があります。Data Source Name属性で指定された名前を使用しているレプリケーション・スキームは機能しません。混乱を避けるには、各DSN定義内のDataStore属性とData Source Name属性に同じ名前を使用します。たとえば、データ・ストア・パスがdirectory/subdirectory/foo.ds0の場合、CREATE REPLICATION文ではfooというデータ・ストア名を使用する必要があります。

データ・ストア・ホストは、IPアドレスまたはホスト名で識別できます。IPアドレスにホスト名を割当てる方法の詳細は、「ホストIPアドレスの設定」を参照してください。


注意: 特殊文字が含まれているホスト名は、二重引用符(")で囲む必要があります。

レプリケーション要素の追加パラメータの設定

データ・ストアまたは表の要素記述には、追加のパラメータを含めることができます。次の項では、それらのパラメータについて説明します。

表要素に対するレプリケーション競合の確認

データ・ストアが双方向レプリケーションに設定されている場合、複数のデータ・ストアの同一表行が個別に同時に更新されると、レプリケーション競合が発生する可能性があります。

このような競合は、レプリケート表にタイムスタンプを含め、各表のELEMENT記述にオプションのCHECK CONFLICTS句を指定してレプリケーション・スキームを設定することによって、表単位で検出および解消できます。


注意: CHECK CONFLICTS句はDATASTORE要素には指定できません。

レプリケーション競合、およびCREATE REPLICATION文のCHECK CONFLICTS句の構成方法の詳細は、「レプリケーション競合の検出および解消」を参照してください。

データ・ストア要素に対する送信永続性の設定

デフォルトでは、マスター・データ・ストアのログ・バッファ内のトランザクション・レコードは、サブスクライバに転送される前にディスクにフラッシュされます(「レプリケーションの動作」を参照)。マスター・データ・ストア全体をレプリケートする(ELEMENTのタイプがDATASTOREである)場合、マスターのログをディスクにフラッシュする処理をレプリケーション・サイクルから除くことによって、レプリケーション・パフォーマンスを向上できます。これを実現するには、ELEMENT記述にTRANSMIT NONDURABLEオプションを含めます。


注意: RETURN TWOSAFEサービスを使用している場合、レプリケーションはTRANSMIT NONDURABLEになります。TRANSMIT DURABLEを設定しても、RETURN TWOSAFEトランザクションに影響はありません。


注意: TRANSMIT DURABLEは、アクティブ・スタンバイ・ペアに対しては設定できません。

例3.2

マスター・データ・ストア(masterds)のすべての内容をサブスクライバ・データ・ストア(subscriberds)にレプリケートする場合およびログをディスクにフラッシュする処理を除く場合、ELEMENT記述(a)は次のようになります。

ELEMENT a DATASTORE

       MASTER masterds ON "system1"

       TRANSMIT NONDURABLE

       SUBSCRIBER subscriberds ON "system2"

TRANSMIT NONDURABLEが設定されている場合にマスター・データ・ストアで障害が発生すると、そのログ・ファイルからマスターをリカバリすることはできません。この場合は、「NONDURABLEデータ・ストアのリカバリ」の手順に従ってください。


注意: TRANSMITの設定に関係なく、サブスクライバではログをディスクにフラッシュする処理が実行されます。詳細は、「レプリケーションの動作」を参照してください。

表またはデータ・ストア要素に対するRETURNサービス属性の設定

RETURN RECEIPTまたはRETURN TWOSAFEサービスを使用すると、レプリケートしたデータがマスターおよびサブスクライバの両方のデータ・ストアで一貫していることをより高いレベルの信頼性を持って保証できます(「レプリケーション・エージェントによって更新をデータ・ストア間でコピーする方法」を参照)。

CREATE REPLICATIONまたはALTER REPLICATION文で定義されるいずれのサブスクライバに対してもRETURNサービス属性を個別に指定できます。また、要素で定義されるすべてのサブスクライバに、同じRETURNサービス属性を指定することもできます。例3.3に、SubDataStore1SubDataStore2に異なるRETURNサービス属性を個別に定義するSUBSCRIBER句を示します。例3.4に、1つのSUBSCRIBER句を使用して、SubDataStore1SubDataStore2の両方に同じRETURNサービス属性を定義する例を示します。


注意: RETURNサービス属性は、順序要素に対して設定できません。

例3.3

CREATE REPLICATION Owner.SchemeName

 ELEMENT ElementName ElementType

  MASTER DataStoreName ON "HostName"

  SUBSCRIBER SubDataStore1 ON "HostName" ReturnServiceAttribute1

  SUBSCRIBER SubDataStore2 ON "HostName" ReturnServiceAttribute2;

例3.4

CREATE REPLICATION Owner.SchemeName

   ELEMENT ElementName ElementType

      MASTER DataStoreName ON "HostName"

      SUBSCRIBER SubDataStore1 ON "HostName",

                 SubDataStore2 ON "HostName"

                 ReturnServiceAttribute;

レプリケーション・スキームの各SUBSCRIBERに、次のRETURNサービス属性を定義できます。これらの属性のそれぞれの使用方法については、「RETURNサービスの使用」を参照してください。

RETURNサービス属性
説明
このサブスクライバに対して行われたすべてのトランザクション更新に対してRETURN RECEIPTサービスを有効にします。詳細は、「RETURN RECEIPT」を参照してください。
このサブスクライバに対して行われた特定のトランザクション更新に対してRETURN RECEIPTサービスを有効にします。詳細は、「RETURN RECEIPT BY REQUEST」を参照してください。
このサブスクライバに対して行われたすべてのトランザクション更新に対してRETURN TWOSAFEサービスを有効にします。詳細は、「RETURN TWOSAFE」を参照してください。
このサブスクライバに対して行われた特定のトランザクション更新に対してRETURN TWOSAFEサービスを有効にします。詳細は、「RETURN TWOSAFE BY REQUEST」を参照してください。
このサブスクライバのRETURNサービス(有効になっているサービスに応じてRETURN RECEIPTまたはRETURN TWOSAFEのいずれか)を無効にします(デフォルト)。詳細は、「NO RETURN」を参照してください。

STORE属性の設定

CREATE REPLICATIONまたはALTER REPLICATION文でSTOREパラメータを使用して、1つ以上のデータ・ストアに次に示すオプションの属性を設定できます。最初の3つの属性は、データ・ストアにRETURNサービス障害/リカバリ・ポリシーを設定するために使用されます。これらの属性については、「RETURNサービス・タイムアウト・エラーおよびレプリケーションの状態変化の管理」を参照してください。

STORE属性
説明
レプリケーションが停止された場合は、「RETURNサービス障害/リカバリ・ポリシーの設定」の説明に従って、RETURNサービスを続行または無効にします。
「RETURNサービス障害/リカバリ・ポリシーの設定」の説明に従って、RETURNサービス障害ポリシーを設定します。
RETURNサービス・ブロッキングがDISABLE RETURNによって無効になっている場合、この属性は、RETURNサービスを再度有効にするタイミングに関するポリシーを設定します。
DISABLE RETURNによってRETURNサービス・ブロッキングが無効になった場合、データ・ストアのDurableCommits設定を上書きし、永続コミットを有効にします。
COMPRESS TRAFFIC
レプリケートの通信量を圧縮して、ネットワーク帯域幅の使用量を減らします。詳細は、「レプリケートの通信量の圧縮」を参照してください。
PORT
マスターからの更新をリスニングするためにサブスクライバ・データ・ストアで使用されるポート番号を設定します。PORT属性を設定しない場合、TimesTenデーモンが動的にポートを選択します。TimesTenでは、静的ポート割当ても行うことができますが、動的ポート割当てを行うことをお薦めします。
静的ポート割当ての詳細は、「動的ポート割当ておよび静的ポート割当て」を参照してください。
TIMEOUT
応答のないサブスクライバにメッセージを再送する前にデータ・ストアが待機する最大時間(秒)を設定します。
RETURN WAIT TIME
RETURNサービスの応答を待機する時間(秒)を指定します。デフォルト値は10秒です。
アプリケーションでは、ttRepSyncSetプロシージャ内のreturnWaitパラメータを使用することによって、このタイムアウト設定を上書きできます。
詳細は、「RETURNサービス・タイムアウト時間の設定」を参照してください。
LOCAL COMMIT ACTION
タイムアウト発生時にRETURNサービス・トランザクションで実行されるデフォルトのアクションを指定します。オプションは次のとおりです。
NO ACTION: タイムアウト発生時、コミット関数はアプリケーションに返され、トランザクションはコミット・コールに入ったときと同じ状態のままになります。ただし、アプリケーションがレプリケート対象の表を更新できない場合を除きます。アプリケーションはコミットを再発行できます。
COMMIT: タイムアウト発生時に、コミット関数がCOMMITをログ・レコードに書き込み、トランザクションをローカルで効率よく終了します。同じトランザクション上でこれ以上の処理を行うことはできません。
ttRepSyncSetプロシージャでlocalActionパラメータを使用することによって、特定のトランザクションに対してこのデフォルト設定を無効にすることができます。
FAILTHRESHOLD
「ログ障害しきい値の設定」の説明に従って、ログのしきい値を設定します。

FAILTHRESHOLDおよびTIMEOUT属性は、特定のレプリケーション・スキーム定義に対して固有に設定できます。つまり、これらの属性は、レプリケート・データ・ストアに異なるレプリケーション・スキーム定義を適用している場合、異なって設定できます。これは、他の属性には適用されません。他の属性は、すべてのレプリケーション・スキーム定義で同じである必要があります。たとえば、1つのスキームにPORT属性を設定すると、すべてのスキームにその設定が適用されます。

STORE句を使用してFAILTHRESHOLD属性を設定するレプリケーション・スキームの例は、例3.19を参照してください。DISABLE RETURN属性を設定するレプリケーション・スキームの例は、例3.13および例3.14を参照してください。


注意: CREATE REPLICATIONを使用して、同じデータ・ストアに対してPORT属性が異なる様々なスキームを作成すると、前回のCREATE REPLICATION文の設定は無視されます。この場合は、ALTER TABLEを使用して、PORT設定を変更する必要があります。

レプリケートの通信量の圧縮

低帯域幅のネットワークを介してレプリケーションを行う場合、または大量のデータのレプリケーションを行う場合は、レプリケーションに必要な帯域幅の量を減らすCOMPRESS TRAFFIC属性を設定できます。COMPRESS TRAFFIC属性を使用すると、CREATE REPLICATION文またはALTER TABLE文のSTOREパラメータで指定されたデータ・ストアからレプリケートされたデータが圧縮されます。他のデータ・ストアからのレプリケートの通信量は圧縮されません。


注意: 圧縮アルゴリズムは速度に関しては最適化されますが、COMPRESS TRAFFIC属性を有効にすると、レプリケーションのスループットおよび待機時間になんらかの影響があります。

たとえば、データ・ストアdsn1からのレプリケートの通信量は圧縮し、dsn2からのレプリケートの通信量は圧縮しない場合、CREATE REPLICATION文は次のようになります。

CREATE REPLICATION repl.repscheme

ELEMENT d1 DATASTORE

MASTER dsn1 ON machine1

SUBSCRIBER dsn2 ON machine2

ELEMENT d2 DATASTORE

MASTER dsn2 ON machine2

SUBSCRIBER dsn1 ON machine1

STORE dsn1 ON machine1 COMPRESS TRAFFIC ON;

dsn1 dsn2 のデータ・ストア間でのレプリケートの通信量を圧縮するには、次のように入力します。

CREATE REPLICATION repl.scheme

ELEMENT d1 DATASTORE

MASTER dsn1 ON machine1

SUBSCRIBER dsn2 ON machine2

ELEMENT d2 DATASTORE

MASTER dsn2 ON machine2

SUBSCRIBER dsn1 ON machine1

STORE dsn1 ON machine1 COMPRESS TRAFFIC ON

STORE dsn2 ON machine2 COMPRESS TRAFFIC ON;

動的ポート割当ておよび静的ポート割当て

PORT属性を割り当てない場合、TimesTenデーモンが動的にポートを選択します(「STORE属性の設定」を参照)。ポートがこの方法でレプリケーション・エージェントに動的に割り当てられる場合は、TimesTenデーモンのポートも一致させる必要があります。

ポートを静的に割り当てる場合は、CREATE REPLICATION文のSTORE属性に完全なホスト名、DSNおよびPORTを指定する必要があります。

例:

CREATE REPLICATION repl.repscheme

ELEMENT el1 TABLE repl.tab

MASTER dsn1 ON machine1

SUBSCRIBER dsn2 ON machine2

ELEMENT el2 TABLE repl.tab

MASTER dsn2 ON machine2

SUBSCRIBER dsn1 ON machine1

STORE dsn1 ON machine1 PORT 16080

STORE dsn2 ON machine2 PORT 16083;